<?php
class Delivery_Model_Mapper_Votos
	extends Delivery_Model_Mapper_Abstract
{
	
	public function getDbTable()
	{
		return parent::getDbTable( 'Votos' );
	}
	
	public function save( $zona )
	{
		
		$dbTable= $this->getDbTAble();
		
		if ( $zona->getId() == null ){		
			$zona->idZona = $dbTable->insert( $zona );
		} else {
			$zona->idZona = $dbTable->update( $zona );
		}
		
	}
	
	public function getByPedido( $idPedido )
	{
		$dbTable= $this->getDbTAble();
		
		$row = $dbTable->getByPedido( $idPedido );
		
		if(empty($row)){
		    return null;
		}
		
		return $this->_fetch( $row );
	}
	
    public function getByPedidos( $idsPedido )
	{
		$dbTable= $this->getDbTAble();
		
		return $this->_fetchCollection(
		    'Votos',
			$dbTable->getByPedidos( $idsPedido )
		);
	}
	
    public function getByNegocio( $idNegocio )
	{
		$dbTable= $this->getDbTAble();
		
		return $this->_fetchCollection(
		    'Votos',
			$dbTable->getByNegocio( $idNegocio )
		);
	}
	
    public function loadCliente( $votos )
	{
		$mapper = Delivery_Model_Factory::mapper('Clientes');
		
		Delivery_Model_DbTable_Desactivable::onlyActive( false );
		
		if ( $votos instanceof Delivery_Model_Collection_Votos && count($votos)){
		
			$clientes = $mapper->getByIds( $votos->getKeyValues( 'idCliente', true ) );
			
			foreach ( $votos as $votos){
				$votos->setCliente(
					$clientes->offsetGet( $votos->idCliente )
				);
			}
			
		}
		
	 	elseif ( $votos instanceof Delivery_Model_Voto){
			
	 		$votos->setCliente(
	 			$mapper->getById( $votos->idCliente )
	 		);
		}
		
		Delivery_Model_DbTable_Desactivable::onlyActive();
	}
	
	
	
	/**
	 * @param array
	 * @return object Delivery_Model_Voto
	 */
	protected function _fetch( $row )
	{
		return new Delivery_Model_Voto( $row );
	}
	
}